package com.tn.bo;

import java.util.Date;
import java.util.List;

import javax.persistence.Embedded;
import javax.persistence.Id;
import javax.persistence.Transient;

import com.googlecode.objectify.annotation.Entity;

@Entity
public class Payment {
	@Id
	private String uniquePaymentNumber;
	private String paymentNumber;
	private String paymentOriginatorCompany;
	private String paymentRecipientMainCompany;
	private String paymentRecipientRemitToCompany;
	private String paymentDescription;
	private boolean status;
	private Date paymentDate;
	private Date paymentCreateDate;
	private Date paymentSubmittedDate;
	private String paymentComposer;
	private String paymentOwner;
	private List<String> invoices;
	private Double totalPaymentAmount;
	private Currency totalPaymentCurrency;
	private String checkNumber;
	private Double checkAmount;
	private Date checkDate;
	private String checkBankName;
	private String originatingSystem;
	private String originatingCompany;
	@Embedded
	private List<Recipient> recipients;
	private String customField1;
	private String customField2;
	private String customField3;
	private String customField4;
	private String customField5;
	private String customField6;
	private String customField7;
	private String customField8;
	
	private String paymentFromCompanyName;
	private String paymentToCompanyName;
	private String methodOfPayment;
	
	private String eftBankName;
	private String eftAccountNumber;
	private String eftRoutingNumber;
	private Double eftAmount;
	
	private List<String> paymentComments;
	private List<String> paymentAttachmentIds;
	private int paymentVersion ;
	private Date lastModifiedDate;
	private String lastModifiedBy;
	private String paymentOwener;
	
	@Transient
	private String paymentType;
	
	
	public String getPaymentType() {
		return paymentType;
	}
	public void setPaymentType(String paymentType) {
		this.paymentType = paymentType;
	}
	public String getPaymentOwener() {
		return paymentOwener;
	}
	public void setPaymentOwener(String paymentOwener) {
		this.paymentOwener = paymentOwener;
	}
	@Transient
	private List<Payment> paymentHistory;
	
	@Transient
	private String paymentXml;
	
	
	
	public String getPaymentXml() {
		return paymentXml;
	}
	public void setPaymentXml(String paymentXml) {
		this.paymentXml = paymentXml;
	}
	public String getUniquePaymentNumber() {
		return uniquePaymentNumber;
	}
	public void setUniquePaymentNumber(String uniquePaymentNumber) {
		this.uniquePaymentNumber = uniquePaymentNumber;
	}
	public Date getLastModifiedDate() {
		return lastModifiedDate;
	}
	public void setLastModifiedDate(Date lastModifiedDate) {
		this.lastModifiedDate = lastModifiedDate;
	}
	public String getLastModifiedBy() {
		return lastModifiedBy;
	}
	public void setLastModifiedBy(String lastModifiedBy) {
		this.lastModifiedBy = lastModifiedBy;
	}
	public List<Payment> getPaymentHistory() {
		return paymentHistory;
	}
	public void setPaymentHistory(List<Payment> paymentHistory) {
		this.paymentHistory = paymentHistory;
	}
	public int getPaymentVersion() {
		return paymentVersion;
	}
	public void setPaymentVersion(int paymentVersion) {
		this.paymentVersion = paymentVersion;
	}
	public List<String> getPaymentComments() {
		return paymentComments;
	}
	public String getCheckBankName() {
		return checkBankName;
	}
	public void setCheckBankName(String checkBankName) {
		this.checkBankName = checkBankName;
	}
	public String getPaymentFromCompanyName() {
		return paymentFromCompanyName;
	}
	public void setPaymentFromCompanyName(String paymentFromCompanyName) {
		this.paymentFromCompanyName = paymentFromCompanyName;
	}
	public String getPaymentToCompanyName() {
		return paymentToCompanyName;
	}
	public void setPaymentToCompanyName(String paymentToCompanyName) {
		this.paymentToCompanyName = paymentToCompanyName;
	}
	public String getMethodOfPayment() {
		return methodOfPayment;
	}
	public void setMethodOfPayment(String methodOfPayment) {
		this.methodOfPayment = methodOfPayment;
	}
	public String getEftBankName() {
		return eftBankName;
	}
	public void setEftBankName(String eftBankName) {
		this.eftBankName = eftBankName;
	}
	public String getEftAccountNumber() {
		return eftAccountNumber;
	}
	public void setEftAccountNumber(String eftAccountNumber) {
		this.eftAccountNumber = eftAccountNumber;
	}
	public String getEftRoutingNumber() {
		return eftRoutingNumber;
	}
	public void setEftRoutingNumber(String eftRoutingNumber) {
		this.eftRoutingNumber = eftRoutingNumber;
	}
	public Double getEftAmount() {
		return eftAmount;
	}
	public void setEftAmount(Double eftAmount) {
		this.eftAmount = eftAmount;
	}
	public List<String> getPaymentAttachmentIds() {
		return paymentAttachmentIds;
	}
	public void setPaymentAttachmentIds(List<String> paymentAttachmentIds) {
		this.paymentAttachmentIds = paymentAttachmentIds;
	}
	public void setPaymentComments(List<String> paymentComments) {
		this.paymentComments = paymentComments;
	}
	public String getPaymentNumber() {
		return paymentNumber;
	}
	public void setPaymentNumber(String paymentNumber) {
		this.paymentNumber = paymentNumber;
	}
	public String getPaymentOriginatorCompany() {
		return paymentOriginatorCompany;
	}
	public void setPaymentOriginatorCompany(String paymentOriginatorCompany) {
		this.paymentOriginatorCompany = paymentOriginatorCompany;
	}
	public String getPaymentRecipientMainCompany() {
		return paymentRecipientMainCompany;
	}
	public void setPaymentRecipientMainCompany(String paymentRecipientMainCompany) {
		this.paymentRecipientMainCompany = paymentRecipientMainCompany;
	}
	public String getPaymentRecipientRemitToCompany() {
		return paymentRecipientRemitToCompany;
	}
	public void setPaymentRecipientRemitToCompany(
			String paymentRecipientRemitToCompany) {
		this.paymentRecipientRemitToCompany = paymentRecipientRemitToCompany;
	}
	public String getPaymentDescription() {
		return paymentDescription;
	}
	public void setPaymentDescription(String paymentDescription) {
		this.paymentDescription = paymentDescription;
	}
	public boolean isStatus() {
		return status;
	}
	public void setStatus(boolean status) {
		this.status = status;
	}
	public Date getPaymentDate() {
		return paymentDate;
	}
	public void setPaymentDate(Date paymentDate) {
		this.paymentDate = paymentDate;
	}
	public Date getPaymentCreateDate() {
		return paymentCreateDate;
	}
	public void setPaymentCreateDate(Date paymentCreateDate) {
		this.paymentCreateDate = paymentCreateDate;
	}
	public Date getPaymentSubmittedDate() {
		return paymentSubmittedDate;
	}
	public void setPaymentSubmittedDate(Date paymentSubmittedDate) {
		this.paymentSubmittedDate = paymentSubmittedDate;
	}
	public String getPaymentComposer() {
		return paymentComposer;
	}
	public void setPaymentComposer(String paymentComposer) {
		this.paymentComposer = paymentComposer;
	}
	public String getPaymentOwner() {
		return paymentOwner;
	}
	public void setPaymentOwner(String paymentOwner) {
		this.paymentOwner = paymentOwner;
	}
	public List<String> getInvoices() {
		return invoices;
	}
	public void setInvoices(List<String> invoices) {
		this.invoices = invoices;
	}
	
	public Double getTotalPaymentAmount() {
		return totalPaymentAmount;
	}
	public void setTotalPaymentAmount(Double totalPaymentAmount) {
		this.totalPaymentAmount = totalPaymentAmount;
	}
	public Currency getTotalPaymentCurrency() {
		return totalPaymentCurrency;
	}
	public void setTotalPaymentCurrency(Currency totalPaymentCurrency) {
		this.totalPaymentCurrency = totalPaymentCurrency;
	}
	public String getCheckNumber() {
		return checkNumber;
	}
	public void setCheckNumber(String checkNumber) {
		this.checkNumber = checkNumber;
	}
	public Double getCheckAmount() {
		return checkAmount;
	}
	public void setCheckAmount(Double checkAmount) {
		this.checkAmount = checkAmount;
	}
	public Date getCheckDate() {
		return checkDate;
	}
	public void setCheckDate(Date checkDate) {
		this.checkDate = checkDate;
	}
	public String getOriginatingSystem() {
		return originatingSystem;
	}
	public void setOriginatingSystem(String originatingSystem) {
		this.originatingSystem = originatingSystem;
	}
	public String getOriginatingCompany() {
		return originatingCompany;
	}
	public void setOriginatingCompany(String originatingCompany) {
		this.originatingCompany = originatingCompany;
	}
	public List<Recipient> getRecipients() {
		return recipients;
	}
	public void setRecipients(List<Recipient> recipients) {
		this.recipients = recipients;
	}
	public String getCustomField1() {
		return customField1;
	}
	public void setCustomField1(String customField1) {
		this.customField1 = customField1;
	}
	public String getCustomField2() {
		return customField2;
	}
	public void setCustomField2(String customField2) {
		this.customField2 = customField2;
	}
	public String getCustomField3() {
		return customField3;
	}
	public void setCustomField3(String customField3) {
		this.customField3 = customField3;
	}
	public String getCustomField4() {
		return customField4;
	}
	public void setCustomField4(String customField4) {
		this.customField4 = customField4;
	}
	public String getCustomField5() {
		return customField5;
	}
	public void setCustomField5(String customField5) {
		this.customField5 = customField5;
	}
	public String getCustomField6() {
		return customField6;
	}
	public void setCustomField6(String customField6) {
		this.customField6 = customField6;
	}
	public String getCustomField7() {
		return customField7;
	}
	public void setCustomField7(String customField7) {
		this.customField7 = customField7;
	}
	public String getCustomField8() {
		return customField8;
	}
	public void setCustomField8(String customField8) {
		this.customField8 = customField8;
	}
	
	public String toString(){
		return "uniquePaymentNumber: " + this.uniquePaymentNumber 
				+ "\n paymentNumber: " + this.paymentNumber
				+ "\n paymentVersion: " + this.paymentVersion;
	}	
}
